home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 9 / FM Towns Free Software Collection 9.iso / t_os / shell / tsbgex / src / neko / draw4.asm < prev    next >
Encoding:
Assembly Source File  |  1994-11-16  |  1.2 KB  |  80 lines

  1.     assume    cs:text
  2. text    segment para public 'CODE'
  3.  
  4.     public    _draw4
  5. _draw4    proc    near
  6.     push    ebp
  7.     push    ebx
  8.     push    ecx
  9.     push    edx
  10.     push    esi
  11.     push    edi
  12.     mov    edi,28[esp]    ; edi <-- work
  13.     mov    ebp,36[esp]    ; ebp <-- bitmap data structure
  14.     mov    esi,[ebp]    ; esi <-- PixelPattern
  15.     add    esi,40[esp]
  16.     mov    edx,4[ebp]    ; edx <-- MaskPattern
  17.     add    edx,40[esp]
  18.     mov    ebp,44[esp]    ; bit mask
  19. #0:
  20.     mov    ecx,48[esp]    ; ecx <-- width
  21.     mov    eax,[esi]    ; eax <-- *pix++
  22.     add    esi,4
  23.     mov    ebx,[edx]    ; ebx <-- *mask++
  24.     add    edx,4
  25.     push    edx
  26.     mov    dl,60[esp]    ; black pixel
  27.     mov    dh,64[esp]    ; while pixel
  28. #1:
  29.     test    ebx,ebp        ; mask check
  30.     je    SHORT #3
  31.     test    eax,ebp        ; pixel check
  32.     je    SHORT #2
  33.     mov    [edi],dl    ; black
  34.     jmp    SHORT #3
  35. #2:
  36.     mov    [edi],dh    ; white
  37. #3:
  38.     inc    edi
  39.     shr    eax,1
  40.     shr    ebx,1
  41.     loop    #1
  42.  
  43.     pop    edx
  44.     add    edi,32[esp]
  45.     dec    dword ptr 52[esp]    ; height--
  46.     jnz    SHORT #0
  47.     pop    edi
  48.     pop    esi
  49.     pop    edx
  50.     pop    ecx
  51.     pop    ebx
  52.     pop    ebp
  53.     ret
  54. _draw4    endp
  55.  
  56.     public    _putbyte
  57. _putbyte proc    near
  58.     push    ebx
  59.     mov    eax,8[esp]
  60.     mov    bl,12[esp]
  61.     mov    fs:[eax],bl
  62.     pop    ebx
  63.     ret
  64. _putbyte endp
  65.  
  66.     public    _putnibble
  67. _putnibble proc near
  68.     push    ebx
  69.     mov    eax,8[esp]
  70.     mov    bl,fs:[eax]
  71.     and    bl,12[esp]
  72.     or    bl,16[esp]
  73.     mov    fs:[eax],bl
  74.     pop    ebx
  75.     ret
  76. _putnibble endp
  77.     
  78. text    ends
  79.     end
  80.